package org.apogeescience.annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
/**
 * Interface for defining a column in a table
 * @author Isaac
 *
 */
public @interface Column {

	/**
	 * Name of the Column
	 * @return name
	 */
	String name();

	/**
	 * Column Datatype
	 * @return type
	 */
	Class<?> type() default String.class;

	/**
	 * Format for date,number,string
	 * @return format
	 */
	String format() default "";

	/**
	 * Can the column be nullable?
	 * @return
	 */
	boolean nullable() default true;

	/**
	 * Column data precision
	 * @return
	 */
	int precision() default 9999;

	/**
	 * Sequence name
	 * @return
	 */
	String sequence() default "";

}
